草庐IT

c++ - 将整数复制到缓冲区 memcpy C++

全部标签

c - 如何重新打开一个关闭的文件描述符

我有一个场景,我为两个child和parent之间的通信创建了管道。Parent将(使用写入函数)数据写入管道并关闭相应的文件描述符。问题是当我想再次将数据写入管道时,写入函数返回错误代码-1。我认为这是因为在上一次迭代中已经关闭了写入端。那么对应的文件描述符关闭一次后如何打开。我尝试使用open()函数,该函数需要某些文件的路径作为参数。但是我没有在我的应用程序中使用任何文件。我有简单的文件描述符(intarr[2])。是否可以通过管道实现上述场景???? 最佳答案 一旦管道关闭,它就关闭了。你不能把它带回来。如果您想向其中写入更

arrays - 复制相同类型的数组

我想编写一个程序来接收一个数组(字符串、整数或其他数组)并创建另一个仅包含第一个元素的相同类型的数组。例如:对于字符串数组arr:=[]string("hello","world")我的输出是arr2:=[]string(arr[0]);我不能使用复制功能,因为要那样做,我必须为它创建(制作)一个新的slice。在这种情况下,我仍然需要找出第一个数组的类型(string、int、bool等等……)也许我可以使用reflect.TypeOf()但我仍然不知道如何使用该信息来创建相同类型的slice或数组。我不考虑为此使用条件。例如:ifreflect.TypeOf(arr)==[]int

list - 为什么将列表整数元素转换为字符串时得到 "interface conversion: interface is int32"?

Go新手...我编写了一个程序来删除存储在列表中的重复整数。当我为removeDuplicates函数运行以下测试时,我收到以下指向此行的错误:linked_test中的testString+=strconv.Itoa(e.Value.(int))。去吧。为什么会这样,我该如何解决?我将整数存储在testList中并使用e.Value获取它们并使用.(int)进行类型转换。panic:interfaceconversion:interfaceisint32,notint[recovered]panic:interfaceconversion:interfaceisint32,notin

c - golang中等效的结构数组

我正在寻找等同于结构数组的东西。或者等价于golang中的以下代码:structmy_struct{inta;charb;}ins[10],*p[10];任何例子,我如何在golang中为这些提供/分配值? 最佳答案 您可以找到有关数组的一些基本信息:http://golang.org/doc/effective_go.html#arrayspackagemainimport("fmt")vars[10]MyStruct//initializesto0funcmain(){fork,v:=ranges{fmt.Println(k,v

sockets - io.复制: How to know if a socket is closed or disconnected

我有一个简单的程序,它将程序的stdin、stdout和stderr连接到一个套接字,就像这样,gofunc(){deferconn.Close();deferstdin.Close();io.Copy(stdin,conn);}();gofunc(){deferconn.Close();deferstdout.Close();deferstderr.Close();io.Copy(conn,stdout);io.Copy(conn,stderr);}();select{}我有两个问题,我必须通过执行select{}让这两个goroutine保持运行当套接字断开连接时,无法通知它。如果

go - 在数据库 golang 中保存发布数据(具有整数和字符串值)的正确方法是什么?

我有以下golang代码:packagemainimport("github.com/gin-gonic/gin""gopkg.in/mgo.v2""gopkg.in/mgo.v2/bson""log""time")funcmain(){router:=gin.Default()router.POST("/save-address",SaveAddress)router.Run()}funcSaveAddress(c*gin.Context){varerrerrorconditions:=bson.M{}c.Request.ParseForm()forkey,_:=rangec.Req

go - bufio readbytes 缓冲区大小

我试图了解bufioReadBytes在接收大数据包时的行为。我在MTU=9001的unix机器的eth0上运行一个简单的GolangTCP服务器。客户端是一台单独的机器(没有直接连接到服务器)正在eth0上运行一个python客户端程序,MTU=1500。我的客户端python程序正在尝试发送一些大数据包,这些数据包按预期在客户端机器中被分割,并以最大TCPMSS=1440的IP数据包发送出去。到此为止,一切都很好。数据包到达服务器机器,我希望服务器机器在OSI第4层重新组装数据包。因此,据我所知,我的Golang套接字缓冲区应该得到1个大数据包(已经重新组装)。我的Golang服务

asynchronous - 缓冲 channel 的理想大小和工作人员数量是多少?

我正在尝试构建一个异步编解码器。我已经实现了一个可以访问缓冲作业channel的作业调度器varJobChannelchanJob=make(chanJob,100000)调度员将worker数量作为输入并向他们分配工作funcStartDispacher(numberOfWorkersint){//startworkerswg:=&sync.WaitGroup{}wg.Add(numberOfWorkers)fori:=int(1);i我的主要功能启动调度程序并不断给它工作(在本例中为200000个工作)workDispatcher.StartDispacher(2*runtime.

c - 直接C指针转换

我有这个C代码:uint8_t*data[BUF_SIZE];data=...;//externvoidgoReadData(uint8_t*data,intbufferSize);goReadData(data,BUF_SIZE)在GO代码中,我试图将data指针用作GO数组或slice,我想从*C.uint8_t中检索一个[]uint8。我知道data的大小//exportgoReadDatafuncgoReadData(data*C.uint8_t,bufferSizeC.int){fmt.Printf("Datatype%v\n",reflect.TypeOf(data))//

json - 需要将 JSON 中的整数解析为整数,而不是 float

首先让我解释一下这个问题。我的Golang应用程序中有一个JSON记录流。它基本上将这些转发到数据存储(InfluxDB)。JSON中有一些整数值,也有一些浮点值。必须将这些转发到具有原始数据类型的数据存储。如果他们不这样做,就会发生类型冲突,写操作就会失败。RubyJSON解析器可以毫不费力地执行此操作:require'json'obj={"a"=>123,"b"=>12.3}parsed=JSON.parse(obj.to_json)printparsed["a"].class#=>Integerprintparsed["b"].class#=>FloatGolang中的encod